home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Applications 1996 May / SGI IRIX 6.2 Applications 1996 May.iso / dist / impr_dev.idb / usr / impressario / src / libimp / impI.h.z / impI.h
C/C++ Source or Header  |  1996-05-06  |  4KB  |  119 lines

  1. /**************************************************************************
  2.  *
  3.  *           Copyright (c)    1993 Silicon Graphics, Inc.
  4.  *            All Rights Reserved
  5.  *
  6.  *       THIS    IS UNPUBLISHED PROPRIETARY SOURCE CODE OF SGI
  7.  *
  8.  * The copyright notice above does not evidence any actual of intended
  9.  * publication of such source code, and is an unpublished work by Silicon
  10.  * Graphics, Inc. This material contains CONFIDENTIAL INFORMATION that is
  11.  * the property of Silicon Graphics, Inc. Any use, duplication or
  12.  * disclosure not specifically authorized by Silicon Graphics is strictly
  13.  * prohibited.
  14.  *
  15.  * RESTRICTED RIGHTS LEGEND:
  16.  *
  17.  * Use, duplication or disclosure by the Government is subject to
  18.  * restrictions as set forth in subdivision (c)(1)(ii) of the Rights in
  19.  * Technical Data and Computer Software clause at DFARS 52.227-7013,
  20.  * and/or in similar or successor clauses in the FAR, DOD or NASA FAR
  21.  * Supplement. Unpublished - rights reserved under the Copyright Laws of
  22.  * the United States. Contractor is SILICON GRAPHICS, INC., 2011 N.
  23.  * Shoreline Blvd., Mountain View, CA 94039-7311
  24.  **************************************************************************
  25.  *
  26.  * File: impI.h
  27.  *
  28.  * Description: Internal definitions and information for libimp. This
  29.  *    header file is not intended to be included in any user level
  30.  *    application program.
  31.  *
  32.  **************************************************************************/
  33.  
  34.  
  35. #ident "$Revision: 1.3 $"
  36.  
  37.  
  38. #ifndef __IMP_IMPI_H__
  39. #define __IMP_IMPI_H__
  40.  
  41.  
  42. #include <sys/types.h>
  43. #include "msgs/uxsgiimpr.h"
  44. #include "imp.h"
  45.  
  46.  
  47. /* File structure info */
  48.  
  49. #define _IMP_TABLES_START    512L
  50.  
  51.  
  52. /* Byte swaping macros */
  53.  
  54. #define _impSwapShort(swd)    ((ushort_t)((((ushort_t)swd) >> 8) | \
  55.                         (((ushort_t)swd) << 8)))
  56. #define _impSwapLong(lwd)    ((__uint32_t)((((__uint32_t)lwd) >> 24)   | \
  57.                  ((((__uint32_t)lwd) >> 8) & 0xff00)   | \
  58.                  ((((__uint32_t)lwd) << 8) & 0xff0000) | \
  59.                  (((__uint32_t)lwd) << 24)))
  60.  
  61.  
  62. /* Byte allocation macros */
  63.  
  64. #define _impBufferSize(xsize)    (((xsize) + ((xsize) >> 6)) << 2)
  65. #define _impBufferAlloc(image)    \
  66.             ((short*)malloc(_impBufferSize(impXSize(image))))
  67.  
  68.  
  69. /* Memory allocation macros */
  70.  
  71. #define _impMalloc(ptr,type,num,macro) \
  72.         if ((ptr = (type*)malloc((num)*sizeof(type))) == NULL) \
  73.             macro(IMP_ERR_MEMALLOC)
  74.  
  75.  
  76. /* Error macros */
  77.  
  78. #define _impReturnError(err_code)    { \
  79.                     IMPerrno = (err_code); \
  80.                     return -1; \
  81.                     }
  82.  
  83. #define _impReturnErrorPtr(err_code)    { \
  84.                     IMPerrno = (err_code); \
  85.                     return NULL; \
  86.                     }
  87.  
  88.  
  89. /* Misc. macros */
  90.  
  91. #define _impBadRow(img,row,chan)    (((row) >= impYSize(img)) || \
  92.                      ((chan) >= impNumChannels(img)))
  93. #define _impWriting(image)        ((image)->flags & _IOWRT)
  94. #define _impReading(image)        ((image)->flags & _IOREAD)
  95. #define _impMin2(a,b)            (((a) < (b))? (a): (b))
  96. #define _impMax2(a,b)            (((a) < (b))? (b): (a))
  97. #define _impMin3(a,b,c)            _impMin2(_impMin2((a),(b)),(c))
  98. #define _impMax3(a,b,c)            _impMax2(_impMax2((a),(b)),(c))
  99.  
  100.  
  101. /* Internal function declarations */
  102.  
  103. #ifdef __cplusplus
  104. extern "C" {
  105. #endif
  106. extern void    _impSwapHeader(IMPImage *image);
  107. extern void     _impSwapShorts(ushort_t *arr, int nBytes);
  108. extern void     _impSwapLongs(__uint32_t *arr, int nBytes);
  109. extern off_t    _impSeekOffset(IMPImage *image, off_t offset);
  110. extern off_t    _impSeekRow(IMPImage *image, ushort_t row, ushort_t channel);
  111. extern int    _impWrite(IMPImage *image, void *buffer, uint_t count);
  112. extern int    _impRead(IMPImage *image, void *buffer, uint_t count);
  113. #ifdef __cplusplus
  114. }
  115. #endif
  116.  
  117.  
  118. #endif /* !__IMP_IMPI_H__ */
  119.